package com.cs.paoyer.administration.web.action;

import com.cs.paoyer.administration.business.AdministrationMngr;
import com.cs.paoyer.administration.business.model.UserGroupVO;
import com.cs.paoyer.administration.business.model.UserVO;
import com.cs.paoyer.administration.exception.AdministrationUserException;
import com.cs.paoyer.administration.util.AccessControl;
import com.cs.paoyer.administration.web.form.UserForm;
import com.cs.paoyer.common.exception.CommonUserException;
import com.cs.paoyer.common.exception.SystemException;
import com.cs.paoyer.common.exception.UserException;

import java.io.IOException;

import java.util.Collection;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

public class DesactivateUserAction extends Action  {
  /**
   * This is the main action called from the Struts framework.
   * @param mapping The ActionMapping used to select this instance.
   * @param form The optional ActionForm bean for this request.
   * @param request The HTTP Request we are processing.
   * @param response The HTTP Response we are processing.
   */
      public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    
        
        UserForm userForm = ( UserForm ) form;
        ActionMessages messages = new ActionMessages();
                    //AdministrationDelegate delegate = new AdministrationDelegate();
        AdministrationMngr delegate = new AdministrationMngr();
        HttpSession session = request.getSession();
        
        try
                    {
                                    AccessControl access = new AccessControl();
            access.validateAccess(mapping,request,response);
            UserVO user = (UserVO) request.getSession().getAttribute("userInfo");
            String terminalAddress = request.getRemoteAddr();
            UserVO user1= new UserVO();
            user1.setCode(userForm.getCode());
            user1.setUse("N");                        
            UserGroupVO userGroup = new UserGroupVO();
            userGroup.setCode(new Long(0));
            userGroup.setWebUserModif("false");
            userGroup.setName(user.getUserGroupName());
            Collection userGroups = delegate.findUserGroupByCriterea(userGroup);
            if(userGroups!=null && userGroups.size()>0)
            {
                request.setAttribute("userGroups",userGroups);
            }
                             
                              delegate.desactivateUser(user1); 
                              messages.add("msgOk", 
                    new ActionMessage("message.transaction.was.successfull"));
                  saveMessages(request, messages);
        }
                    catch (UserException ue) 
                    {
                                    messages.add("msgWarn",  new ActionMessage("loginForm.message."
                                                                                                                                                            + ue.getExceptionVO().getId()));
                                    saveMessages(request, messages);
            if(ue.getExceptionVO().getId()==AdministrationUserException.ENDED_SESSION)
            {       
                  response.sendRedirect(request.getContextPath()+"/index.jsp");
            }
            else if(ue.getExceptionVO().getId()==CommonUserException.NOT_ALLOWED_RESOURCE)
            {
                response.sendRedirect(request.getContextPath()+"/admin/tile/invalidatedResource.jsp");
            }
            else
            {
                return mapping.getInputForward();
            }
    
          
        }
                    catch ( SystemException se) 
                    {
                                    messages.add("msgError",  new ActionMessage("loginForm.message."
                                                                                                                                                            + se.getExceptionVO().getId()));
                                    saveMessages(request, messages);
                                    //retornamos a la pagina de la que viene el usuario (Login.jsp)
                                    return mapping.getInputForward();
        }
        return mapping.findForward("success");
      }
}

